package com.itheima.stock.service;

import com.itheima.stock.pojo.SysPermission;
import com.itheima.stock.pojo.SysUser;
import com.itheima.stock.vo.req.LoginReqVo;
import com.itheima.stock.vo.req.UserReqVo;
import com.itheima.stock.vo.resp.LoginRespVo;
import com.itheima.stock.vo.resp.PageResult;
import com.itheima.stock.vo.resp.R;
import com.itheima.stock.vo.resp.pojo.PermissionPojo;

import java.util.List;
import java.util.Map;

public interface UserService {
    List<PermissionPojo> getTree(List<SysPermission> permissions, String pid, boolean isOnlyMenuType);

    /**
     * 用户登录接口
     *
     * @param vo
     * @return
     */
    R<LoginRespVo> login(LoginReqVo vo);

    /**
     * 生成验证码接口
     * @return
     */
    R<Map> generateCaptcha();

    /**
     * 多条件综合查询用户分页信息，条件包含：分页信息 用户创建日期范围
     *
     * @param vo
     * @return
     */
    R<PageResult<SysUser>> queryUserInfo(UserReqVo vo);

    /**
     * 添加用户信息
     * @param sysUser
     * @return
     */
    R<String> insertUserInfo(SysUser sysUser);

    /**
     * 根据用户id查询用户所分配的角色 查询所有的角色
     * @param userId
     * @return
     */
    R<Map<String, Object>> queryUserRoleInfo(String userId);

    /**
     * 修改页面回显信息
     * @param userId
     * @return
     */
    R<SysUser> getById(Long userId);

    /**
     * 修改用户信息
     * @param sysUser
     * @return
     */
    R<String> update(SysUser sysUser);

    /**
     * 批量删除用户信息
     * @param ids
     * @return
     */
    R<String> delete(List<Long> ids);
}
